﻿<%@ WebHandler Language="C#" Class="ashAdm" %>

using System;
using System.Data;
using System.Web;
using System.Text;

public class ashAdm : IHttpHandler
{
    string MethodName = string.Empty;
    string CallBackMethodName = string.Empty;
    object Parameter = string.Empty;

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.ContentEncoding = Encoding.UTF8;

        MethodName = context.Request.Params["method"];
        Parameter = context.Request.Params["param"];
        CallBackMethodName = context.Request.Params["callbackmethod"];

        switch (MethodName.ToLower())
        {
            case "getproducts":
                context.Response.Write(GetDetails());
                break;
            case "getproceso":
                context.Response.Write(GetProceso());
                break;
        }
    }


    public string GetDetails()
    {
        JsonResponse _response = new JsonResponse();
        System.Web.Script.Serialization.JavaScriptSerializer jSearializer =
                       new System.Web.Script.Serialization.JavaScriptSerializer();
        try
        {
            WCProcesoMensaje.BEProcesoMensaje be = new WCProcesoMensaje.BEProcesoMensaje();
            System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje> _DetalleProceso;

            //be.IdProceso = Convert.ToInt32(Parameter);
            be.IdProceso = Convert.ToInt32(Parameter);
            if (be.IdProceso > 0)
            {
                _DetalleProceso = getDetalle(be);
            }
            else
            {
                _DetalleProceso = new System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje>();
            }
            //System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje> _DetalleProceso = getDetalle(be);

            _response.IsSucess = true;
            _response.Message = string.Empty;
            _response.CallBack = CallBackMethodName;
            _response.ResponseData = _DetalleProceso;
        }
        catch (Exception ex)
        {
            _response.Message = ex.Message;
            _response.IsSucess = false;
        }
        return jSearializer.Serialize(_response);
    }

    private System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje> getDetalle(WCProcesoMensaje.BEProcesoMensaje pe)
    {
        System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje> lsData = new System.Collections.Generic.List<WCProcesoMensaje.BEProcesoMensaje>();
        //Obtener Datos:
        DataTable ldtDatos = ListarMensaje(pe).Tables[0];
        int iSecuencia = 1;
        foreach (DataRow dr in ldtDatos.Rows)
        {
            var oPlan = DetalisRow(dr, iSecuencia);

            lsData.Add(oPlan);
            iSecuencia++;
        }
        return lsData;
    }

    private WCProcesoMensaje.BEProcesoMensaje DetalisRow(DataRow pData, int Secuenia)
    {
        WCProcesoMensaje.BEProcesoMensaje ob = new WCProcesoMensaje.BEProcesoMensaje();


        ob.Secuencia = Secuenia;
        ob.Mensaje = pData["Mensaje"] == DBNull.Value ? "" : (string)pData["Mensaje"];
        ob.FechaProceso = pData["FechaProceso"] == DBNull.Value ? DateTime.MinValue : (DateTime)pData["FechaProceso"];
        ob.strFechaProceso = ob.FechaProceso.Day.ToString().PadLeft(2, '0') + "/ " + ob.FechaProceso.Month.ToString().PadLeft(2, '0') + "/ " + ob.FechaProceso.Year.ToString().PadLeft(2, '0')
            + " " + ob.FechaProceso.Hour.ToString().PadLeft(2, '0') + ":" + ob.FechaProceso.Minute.ToString().PadLeft(2, '0');

        return ob;
    }

    
    //Obtener Proceso.
    public string GetProceso()
    {
        JsonResponse _response = new JsonResponse();
        System.Web.Script.Serialization.JavaScriptSerializer jSearializer =
                     new System.Web.Script.Serialization.JavaScriptSerializer();
        try
        {
            WCProceso.BEProceso be = ObtenerProceso(new WCProceso.BEProceso { IdProceso = Convert.ToInt32(Parameter) });
            be.EstadoEjecucion = be.EstadoEjecucion.Replace(" ", "");

            _response.IsSucess = true;
            _response.Message = string.Empty;
            _response.CallBack = CallBackMethodName;
            _response.ResponseData = be;

        }
        catch (Exception ex)
        {
            _response.Message = ex.Message;
            _response.IsSucess = false;
        }
        return jSearializer.Serialize(_response);
    }


    #region WEBSERVICE

    protected DataSet ListarMensaje(WCProcesoMensaje.BEProcesoMensaje pbe)
    {
        DataSet dt = new DataSet();
        WCProcesoMensaje.BEProcesoMensaje be = new WCProcesoMensaje.BEProcesoMensaje();

        using (var client = new ServiceClient<WCProcesoMensaje.IWCProcesoMensaje>("BasicHttpBinding_IWCProcesoMensaje"))
        {
            var response = client.ServiceOperation<DataSet>(c => c.Listar(pbe));
            dt = response;
        }
        return dt;
    }

    protected WCProceso.BEProceso ObtenerProceso(WCProceso.BEProceso pbe)
    {
        WCProceso.BEProceso be = new WCProceso.BEProceso();
        using (var client = new ServiceClient<WCProceso.IWCProceso>("BasicHttpBinding_IWCProceso"))
        {
            var response = client.ServiceOperation<WCProceso.BEProceso>(c => c.Obtener(pbe));
            be = response;
        }
        return be;
    }


    #endregion

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

